Field of the Invention
The present invention relates generally to accessing buffer objects in GPU memory and, more specifically, to image loads, stores and atomic operations.
Description of the Related Art
A typical graphics pipeline includes several shader stages, and each shader stage executes commands specified by the application on data stored in buffer objects bound to the application context. Texture data generated by a typical graphics pipeline is composed of one or more “images” corresponding to distinct levels of detail (“LODs”) of the texture, or faces of a cubemap. Texture data can only be written by outputs of the fragment shader stage, and only to the fragment location within the texture as determined by rasterization. One drawback to these limitations is that the flexibility available to programmers when programming subsequent shading passes of a rendering algorithm is reduced.
As the foregoing illustrates, what is needed in the art is a mechanism for updating texture data from within the different shader stages of a graphics pipeline other than the fragment shader stage.